home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-06-16 | 4.0 KB | 80 lines | [TEXT/MACA] |
- Users of WriteNow (any version) who also use SuperSpool 5.0df or SuperLaserSpool
- (any version) have probably experienced problems with the cursor flashing back
- and forth between the I beam and the arrow. Well I also have been bothered by
- this problem and decided to find a cure.
-
- NOTE: For the rest of this document I will refer to SuperSpool 5.0df and
- SuperLaserSpool(any version) as SLS.
-
- During the process I also discovered that after a reboot or initial startup
- if a DA text print utility were used to print a file before an application
- had been used to print, the SLS would not print the document.
-
- I also found that if you are running under Multifinder (only tested with 6.0.5)
- the system would crash when using a DA Print Utility. During my investigation
- of this problem I found that during the initialization of SLS, the System Heap
- was being corrupted.
-
- To fix all of these problems you must modify two of the resources in SLS.
-
- CAUTION: ALWAYS MAKE MODIFICATIONS ON A BACKUP COPY OF YOUR PROGRAM AND
- PERFORM A BACKUP OF YOUR HARD DISK BEFORE TESTING !!!
-
- NOTE: I have not tested these modifications on the commercial versions
- of SLS, however, the code we are changing may be the same in
- those versions also.
-
- The problem of the first print from a DA not printing is caused because the
- PrintErr word global at $0944 is not being cleared to $0000. To correct this
- you must patch the INIT resource in SLS as follows:
-
- FIND $B090 There is only one occurance near the end of the INIT
- resource.
- Replace CMP.L (A0),D0 $B090
- RTS $4E75
- data $0000
-
- With CMP.L (A0),D0 $B090
- BRA.S $+0002 $6002
- DATA $0000
- CLR.L $0944 $42B8 0944
- RTS $4E75
-
- Save the changes and test your DA Print Utility.
-
- The problems with the system crash, the System Heap corruption and the flashing
- cursor in WriteNow are caused because SLS uses the global address $0948 to
- store pointers it uses. Unfortunately, SLS will also attempt to use the
- Operating System DisposPtr procedure to get rid of the pointer but doesn't
- check first to ensure that $0948 contains a valid pointer. When the DisposPtr
- procedure is called with an invalid pointer, corruption to the master
- pointer list (which is kept in the System Heap) will occur. The corruption will
- occur every time you boot the system if SLS is loaded, even if all other INITs
- are removed.
-
- To correct this problem we must patch the PATC resource in the SLS INIT so that
- SLS checks to see if $FFFF FFFF or a pointer is stored at $0948. If we find
- $FFFF FFFF we must skip the call to the DisposPtr procedure.
-
- The following patch will eliminate this problem.
-
- FIND MOVE.L $00000948,-(A7) $2F39 0000 0948
- REPLACE IT WITH BRA $+1562 $6000 1562
-
- Then go to the end of the PATC resource and add the following code
-
- ADD MOVE.L $00000948,-(A7) $2F39 0000 0948
- CMPI.L $FFFFFFFF,(A7) $0C97 FFFF FFFF
- BEQ $-1568 $6700 EA98
- BRA $-1570 $6000 EA90
-
- Save the changes and test your DA Print Utility and try WriteNow while printing
- and see that the cursor no longer flashes. If you are familiar with Macsbug
- you may also wish to verify that the your System Heap checks ok.
-
- I hope these patches work as well for other users that may have been
- frustrated by these problems.
-
- If you have any questions or problems implementing these patches you may
- contact me on GENIE. My GE Mail address is 'A.FARNHAM'.